Placement of hyperlinks in documents

ABSTRACT

Methods, systems, and apparatus relate to technologies generally relating to the placement of hyperlinks within the body of text of a document. The placement of hyperlinks can be on specified words or phrases, according to a specified link distribution function across the body of the text content of a document. Some techniques involve a method for determining a placement of links on a document that involves selecting a document comprising words of text for placing links in the document, selecting a link distribution function, and using the link distribution function in determining locations for the placement of the links in the document. The placement of hyperlinks in the document may be automatically performed on a server side.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation (and claims the benefit of priorityunder 35 USC 120) of U.S. application Ser. No. 13/211,199, filed Aug.16, 2011, now allowed at U.S. Pat. No. 9,697,204, which claims thebenefit of priority of U.S. Provisional Application Ser. No. 61/374,051,filed on Aug. 16, 2010. The entire contents of both applications arehereby incorporated herein by reference.

TECHNICAL FIELD

This disclosure relates to techniques for the placement of hyperlinkswithin a body of text of a document.

BACKGROUND

The growth of interactive digital networks has enabled businesses andindividuals to engage in a variety of forms of electronic advertising.Using these interactive digital networks, a business or individual maypost an advertisement that can be viewed by a webpage's visitor. Forexample, a webpage's visitor may see advertisements for a business orindividual's services or goods.

SUMMARY

This specification describes technologies generally relating to theplacement of hyperlinks within the body of text of a document, with theplacement of the hyperlinks being performed automatically. Thespecification describes the placement of hyperlinks on specified wordsor phrases, according to a specified link distribution function acrossthe body of the text in the document.

In general, some aspects of the subject matter described in thisspecification can be embodied in methods that involve hyperlinking.Other implementations of these aspects include corresponding systems,apparatus, and computer programs, configured to perform the actions ofthe methods, encoded on computer storage devices.

Some techniques involve a method for determining the placement of linkson a document that involves selecting a document having words of textfor placing links in the document, selecting a link distributionfunction, and using the link distribution function in determininglocations for the placement of the links in the document.

These and other embodiments can each optionally include one or more ofthe following features. The method can involve determining a maximum ofthe link distribution function to determine the placement of the linksin the document. The method can involve applying a Monte-Carlo functionto the selected link distribution function. The method can includeaccessing a dictionary comprising any of a key-value pair list. TheMonte Carlo method can be a Metropolis-Hastings Monte Carlo method toreduce a number of the operations associated with determining theplacement of links on the document. The method can involve associatingvalues with the words. The method can involve selecting a group of wordsthat are located around the maximum of the link distribution function.The method can involve determining a link density to apply to the wordsof the document, where the link density includes a number ofcross-linked characters that are divided by a number of characters in astring of characters. The link density can be configured to be afixed-sized length of characters, a variable size length of characters,or a length of characters in a window that includes a character offsetnumber. The method can include determining the placement of the links atleast by convolving the link distribution function with a Gaussianfunction. The link distribution function can be a flat link densityfunction. The method can involve selecting a link distribution functionbased upon a location of a group of links in the document. The methodcan involve associating types with the words in the document, wheredifferent words can be associated with different link distributionfunctions. The types associated with the words can include a defaulttype and a sponsor type, where the sponsor type can be associated with adictionary of key words that links to sponsored pages. The wordsassociated with the sponsor type can be configured to be grouped into anarea of the document that is less than an entirety of the document. Thearea of the document can be located at a beginning area of the document.The method can involve utilizing a link distribution function having acosine function with n troughs to produce n clusters of links, wherein nis equal to or greater than 1, and determining the placement of thelinks at least by convolving the link distribution function with aGaussian function. The method can be performed in a content managementsystem. The content management system can have a server, for which theselection of the document, the selection of the link distributionfunction, and the determination of the locations of the placement of thelinks in the document can occur at or around the server in the contentmanagement system.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features and aspects of thesubject matter will become apparent from the description, the drawings,and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a diagram of an example of a process for placinghyperlinks.

FIG. 2 depicts a graph with an example of energies as a function of theprocess.

FIG. 3 depicts a graph with an example of link placements in a documentthat are evenly spaced from one another.

FIG. 4 depicts a graph with an example of a link density function toproduce the evenly spaced link placements of FIG. 3

FIG. 5 depicts a graph of with an example of link placements in adocument where the links are clustered together in a single cluster.

FIG. 6 depicts a graph with an example of a link density function with acosine function with one trough to produce the single cluster of linksof FIG. 5.

FIG. 7 depicts a graph with an example of link placements in a documentwhere the links are clustered together in two clusters.

FIG. 8 depicts a graph with an example of a link density function with acosine function with two troughs to produce the two clusters of links ofFIG. 5.

FIG. 9 depicts an example of a website where hyperlinks have been placedbased on an analysis of the link density.

FIG. 10 depicts an example of a user interface of a crosslinker toolthat has identified and analyzed various words and phrases in a websitesimilar to FIG. 9.

FIG. 11 depicts an example of a user interface of the crosslinker toolthat enables inclusion of new hyperlinks that can be associated withidentified words and phrases.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

Hyperlinks or links refer to a type of code that is associated with aword, a group of words, or an image, for example, where the word, groupof words, or the image can be selected to activate the link and jump toa section of a document or another document, such as a web page. Thecode can be, for example, a type of HyperText Markup Language (HTML), atype of Extensible Markup Language (XML), a type of Extensible HypertextMarkup Language (XHTML), or some text wrapper, suffix, or other means ofhighlighting and/or designating a portion of a document for the purposeof linking to another section of the document or to another document.

The term for a “link” (e.g., a “link,” “cross-link” or “crosslink”) maygenerally refer to, for example, an additional string of HTML, XHTML,XML or text wrapper, prefix, suffix, or any other means of highlightingand/or designating a sub-string of a larger document for the purpose oflinking to another document or another section of the same document. Thedocument itself need not be ordinary text, but may be XML, for example.The linking portion of the cross-link may be used for consumption by endusers, used by search engine spiders or crawlers, used by automatedscripts designed to extract such links from a document, or used by anycombination of these. A “hyperlink” may refer to a specific embodimentof a cross-link.

Links can be placed at various locations in a document, such as a webpage or some other type of document using text. In some implementations,some of the linked locations may depend on the context of the document,and in other implementations the locations may be placed on word(s) inlocations where a user is most likely to view them. Some of theselocations may be used for advertisers or for other web page presenters,where a user's selection (e.g., mouse or touchpad click) of the link isimportant. For example, an advertiser (e.g., a sponsor listed on a webpage) may have one or more links positioned on words throughout a webpage document where a user can select the link to open a web pagedocument with the advertiser's information, and the advertiser may wantto place the links in locations where a user is likely to view andselect the link. One factor that may be taken into consideration whenthe link locations are selected may be, for example, spacing the linklocations throughout the web page document or spacing the linksthroughout a section of the web page document so that the links are notclumped or grouped together in an area of the web page document. In someimplementations, a grouping of (spaced-apart) links in a section of thedocument may be preferred. As described below for some implementations,the link locations may be distributed throughout the web page documentby utilizing a distribution function.

In the context of some implementations of the link placementoptimization method, the desired spacing between links in the optimizedoutput can be designated in units of characters (e.g., 8-bit UnicodeTransformation Format (UTF-8), or other specified encoding). In theabsence of any link distribution functions, the optimal link placementmay include inter-link spaces as close as possible to the desiredspacing. In the presence of link distribution functions, the optimallink placement may include inter-link spaces that are modified from thespecified desired spacing. These can optionally be calculated from thedistribution functions in terms of equilibrium spacing.

“Equilibrium spacing” may refer to an analytical solution for the“inter-link spaces” based on the specified “desired spacing” and the“link distribution function.” Some of these calculated “inter-linkspaces” may refer to goals to which the optimization method can generatea distribution as close as possible. For example, if the “desiredspacing” was 100 characters and a cosine “link distribution function”was also specified, then the “equilibrium spacing” would be less than100 characters near the troughs of the cosine function, and greater than100 characters near the peaks of the cosine function. It may also bedescribed as a “modified desired spacing” given a “desired spacing” inthe presence of a “link distribution function.”

A link density may refer to a number of cross-linked characters that aredivided by the total number of characters in a string of characters,such that the link density is indicative of the number of links percharacter, or the numbers of characters per link. The link density canbe defined over a range, which may include the entire document or aportion of the document. When referring to the “link density” as aquantity that varies over the length of the document, such a quantitycan be defined, for example, over a fixed number of characters, avariable number of characters, or a window that is centered about aspecific character offset position in the document. In an example, thelink density may also be interpreted as the global link density of thedocument when it is defined over the entire document. In someimplementations, the link density function can indicate the output ofthe optimization method.

A “link distribution function” can include any number of parameters, andgenerally includes at least one variable (e.g., “x”) as the characteroffset from the beginning of the document to be processed. This functioncan be a scalar function that can be used to mathematically describe thedesired layout of links within a document. For example, a linkdistribution of the form f(x)=A*cos(2*π*x/L), with A being an amplitudeand L being specified as some number of characters, may be used togenerate optimized layouts that include areas of high link densitiesthat coincide with one set of extrema of the distribution function(peaks, at 0, L, 2L, 3L, . . . ), and areas of low link density thatcoincide with the other set of extrema (troughs, at L/2, 3L/2, 5L/2, . .. ). Some examples of these distribution functions are described below.While the link distribution function can be any arbitrary scalarfunction, one application employs a Fourier series that is controlledthrough a user interface for the purpose of allowing a user tographically construct such a distribution function without needing tointeract directly with the mathematical structures. In someimplementations, the link distribution function can be one component ofthe input of the optimization method. For example, a link distributionfunction can be combined with a desired spacing, or even multiple linkdistribution functions to affect a final output link density function.

Web site administrators, for example, may wish to change a specifiedlink-density distribution in real-time since exhaustively searching allpossible hyperlink location configurations may take amount of time andusers may not be willing to wait hours or days for a web page to load.Some factors that may determine this amount of time may be an amount ofthe text in the document and the size of the dictionary (e.g., number ofwords in the dictionary). For text content to be processed “on-the-fly,”the locations of potentially linkable words and phrases may not be knowna priori. With such on-the-fly processing, a maximum number of linkablewords or phrases found in the text will be linked according to a linkdistribution function, with which a process for determining the optimallocations for hyperlinks can be measured in accordance with itsoutputted link-density function.

In one aspect, there can be an assignment of an energy function to thesystem, which can involve, for example, computing total system energy.For a uniform link distribution function, a lowest energy configurationcan result when the hyperlinks are spaced evenly apart within theconfines of where the words and phrases actually appear in the text. Toobtain such a low energy configuration, an initial configuration may beselected and a Monte-Carlo method then can be applied to lower andminimize the system energy, resulting in a solution that can bearbitrarily close to an optimal solution, depending on the time allowedfor the solution to be determined. The optimal solution, at least insome implementations, can refer to a solution where the hyperlinks arelocated as closely as possible to the desired link-density, within theconfines of where the words and phrases actually appear in the text.This process can be generalized to accommodate a wide range ofapplications similar to that of spacing hyperlinks uniformly.

By associating “values” with the words or phrases before applying theoptimization method, the resulting solution can feature more highlyvalued words or phrases that are closer to the maxima of the linkdistribution function. By associating “types” with the words or phrases,in addition to the aforementioned values, different sets of words orphrases can have different link distribution functions specified, whichcan result in multiple concurrent hyperlink placement goals, where eachgoal is specific to a different type of word or phrase. The “types” maybe categories of key words that can have their own range of values andassociated link distribution functions. For example, there may be a“default” type with words linking to other pages in a website. There maybe a type associated with sponsors, where there is a dictionary of keywords linking to sponsored pages, for example, to link from one site toa sponsored site to fulfill a traffic quota. The various “types” mayhave different characteristics, such as having the sponsored types beinglikely to congregate towards the beginning of a document, and thedefault types being evenly distributed throughout the document. Thesponsored types and the default types may also be configured to interactwith each other so that the links for each type are spaced apart in acertain manner. Each type may also be considered as a contribution tothe calculated configuration energy in an associated Monte Carlosimulation.

In some implementations, the document may be configured to have thelinks designated on the server side (instead of the client side), sothat users of the document would not know that the system isautomatically (e.g., without a human interaction of placing the link)placing the links in the document on the server side. Sponsors of webpages may have increased traffic to their website caused by theredirection to their site, and the links to the sponsors' web pages mayenhance their search engine optimization (SEO) position.

In some implementations, instructions or software for the linkingprocess can be integrated at or around the server or be placed somewherein the workflow of a content management system. For example, the sourcematerial (e.g., document) may reside outside of a tool that uses thisprocess, and a cross-linked document can be provided upon request sothat the content management system would see the fetching of thedocument as extracting an already-crossed linked document. The tool mayrefer to a user interface (UI) that can be used either for the purposeof managing content that is filtered through the crosslinker, or formanaging the configuration of the crosslinker itself. In someimplementations, the instructions or software for the linking processmay reside between the source material (e.g., document) and the endapplication of the content.

In an analogy to a physical system of masses attached to each other bysprings that also interact with an external field, for example, the linkdistribution function may act like an external-field contribution to thesystem energy, the values may represent the “charge” of a word orphrase, and the contribution of such a “charged” word or phrase to thesystem energy can be determined by its interaction with the applied“external-field.” In the same analogy, the words or phrases, which actlike masses attached by springs, may be connected either consecutivelyalong a one-dimensional coordinate corresponding to the characterposition of the start of the word or phrase, or pairwise throughout atwo-dimensional coordinate system corresponding to the separation inpixels or other distance measure within the document, between words orphrases, and projected onto two orthogonal axes. The words or phraseshaving different “types” may act like different types of particles, forexample, where each particle may interact with its own type of externalfield, as well as external fields common to all types of particles. Theexternal-field contribution may also be described as a value betweenwhere the word is located and the link density function, or theexternal-field contribution may be described as a way of how well thewords are aligned with the desired function. The external-fieldcontribution may also be described, for example, as the link densityfunction, where the external-field contribution may be, for example, theamplitude of the field multiplied by the value associated with a word atthat amplitude. The calculation of the external-field contribution maybe arbitrary. This analogy to the physical system is presented forexplanation purposes.

The applications may range from generating a cleaner user experience forcross-linked text, to the strategic placement of words and phrasesbased, for example, on their value to search engine optimization (SEO),sales, or traffic. For example, words or phrases that link to asponsored page can be temporarily assigned to appear near the top of aweb page document by applying the correct link distribution function tothe optimization method for the duration of the sponsorship period. Byhaving the link to the sponsored page located near the top of the webpage document, the sponsor can get more leads from search engines, whichmay mean more traffic, more sales, and greater revenue, for example. Thelink may be associated with meta tags that include a description andkeyword(s) for the link.

In some implementations, there can be a dictionary of terms (e.g., aword or a key phrase that can have a URL associated with it), where thedictionary can be used to find words within documents or phrases andassociate a link with the located words. The dictionary may be, forexample, a key-value pair list of phrases, words, and destinations. Asearch engine optimization value can be added to a website byinterlinking the words within a content website. In someimplementations, this process can be performed on the server side(instead of the client side), where the links can be placed on wordsbefore the content is delivered to the user. The process of crosslinkingcan occur before the document is sent to the end user. This can be usedby an entity that utilizes an SEO position and provide value at leastbecause these links/words can be indexed on the server side. From theviewpoint of the entity that has the SEO position, at least in view ofthe search engines, the links can be considered to be part of theoriginal document being sent from the web server to the end user. Fromthe search engine's point of view, links to related content within apiece of content can help to legitimize both pieces of content as beingabout the same topic. In some implementations, updates in the dictionarymay trigger corresponding updates in the placement of links on thedocument.

In some implementations, for example, the link distribution function maybe a one-dimensional function that may be defined based on characterlocation. For example, if there are 5000 character locations in adocument, then the link distribution function may be defined from 0 to5000, and the link distribution function may have an amplitude. Thefunction may be used to center the links at locations where theamplitude of the link distribution function is high. The linkdistribution function may be flat for evenly-spaced links in thedocument, the link distribution function may be a sloped line so thatthere is a bias for placing links at the beginning or the end of thedocument, or the link distribution function could be any arbitraryfunction (e.g., such as a Fourier function). Some documents, for examplein a web page with sponsored links were users are likely to view thebeginning of a document, may have links at the beginning of the documentthat are placed by a sloped line from the link distribution function,and may have other default links that are placed by any general formatin the remainder of the document.

In some implementations, there may be multiple dictionaries used, wheresome dictionaries may be preferred over others, and the preferreddictionaries may be used in cases of conflicts or in cases of multiplemeanings of links and words.

FIG. 1 depicts a diagram of an example of a process for generating theplacements of hyperlinks. In the process, all locations in the text arefound for each cross-linkable phrase (or word) in the document (105).Then, an initial state is generated and an energy of the initial stateis calculated (110). The initial state can be, for example, arandomly-generated state or a specified or predetermined state. A newtrial state is created for each phrase or word (115). New trial statesare created, for example, either by moving an existing cross-linkedphrase to a new location, or by exchanging a cross-linked phrase withanother cross-linked phrase (that may not be in the current state)(155).

An energy of the new trial state from pairwise consecutive and linkdistribution function contributions is calculated (120). The “pairwiseconsecutive” contribution to the total energy can generally refer to theenergy associated with an interaction between two consecutive links, forexample, as a function of their separation distance (e.g., in numbers ofcharacters). For instance, as the positions of two consecutive linkswithin a document are brought closer together, the amount of energycontributed to the total energy from their configuration can increase.The “link distribution function” contribution to the total energy canrefer to the energy associated with one link's interaction with anexternally imposed energy function. As an example, for a linear linkdistribution function, the contribution to the total energy due to onelink's interaction with this field can change linearly with its distance(e.g., in number of characters) from the start of the document.

The energy of the new trial state, E_(new), is compared with the energyof the current state E_(current) (125). If the energy of the new trialstate, E_(new), is less than the energy of the current state E_(current)then a comparison is made in regards to a probability check for thelikelihood of the trial state (130). If the energy of the new trialstate, E_(new), is not less than the energy of the current state,E_(current), then the current state is replaced with the new state (145)and a determination is made to see if the maximum number of steps havebeen completed (135).

A random number, RNG, is generated for the probability check (160). Thegeneration of the random number, RNG, for this part of the process canserve as the probability check for the likelihood of the new trialstate. The probability can be normalized, for example, so that it canfall within the range [0, 1], and so that the random number is generatedover the same range. If the random number generated, RNG, falls belowthe probability of the new trial state, P_(new), then the new trialstate is accepted (145), even though it is of higher energy. This may bepart of the Metropolis-Hastings algorithm, for example, which can ensurethat the sampled distribution of states move toward the desireddistribution of states, which can be specified as a Boltzmanndistribution of energy states in the probability function. If the randomnumber generated, RNG, does not fall below the probability of the newtrial state, P_(new), then the determination is made to see if themaximum number of steps have been completed (135).

If the number of maximum steps has been completed, then the lowestenergy state is reported (140). If the number of maximum steps has notbeen completed, then a new trial state is created for each phrase (115).The determination for the maximum number of steps (135) relates to anumber of times the process will generate the new trial state. For afixed number of maximum steps, the time allocated for the determinationcan depend on the number of trial states possible for the system (e.g.,the number of available links, the number of positions available foreach of the links, etc.). In some implementations, the “max steps”parameter may refer to a fixed limitation on processing or oncomputation time across an implementation of this process, and in otherimplementations, the “max steps” parameter can be used for limitingthese quantities for a specific piece of content where the number oflinks and link positions are fixed.

In the process of FIG. 1, the specificity of theexternal-field/single-link interaction can include multiple interactionsof a link with different link distribution functions. For example, byspecifying an additional “type” for the links in this system, multiplelink distribution functions can be applied based on the “type” parameterof the link. This added complexity may give rise to type-specificbehaviors (e.g., such as “sponsor” links congregating toward the top ofa document, while all other links spread out evenly throughout the restof the document). The link values can act in such a way as to specifythe relative strength of interaction between a link and each of the linkdistribution functions. The type-specific features, for example, may beimplemented in FIG. 1 as an additional loop over all specified linkdistribution functions in conjunction with calculating the energy of thenew trial state (120).

The process of FIG. 1 may also involve input parameters for equilibriumdistance, link distribution functions, and link distribution functionsparameters (103). The link distribution function parameters can bescalar values used to indicate the relative strengths of differentinteractions (pairwise and link distribution function). For reference,the link distribution function parameter of the pairwise repulsiveinteraction can be taken to be 1. As an example, an assumption can bemade that the links are to be denser near the bottom of a document andless dense near the top of the document. In this example, an externallink distribution function of the form F(x)=A, can be used, with A beinga constant, specified link distribution function parameter. Theassociated energy can be determined using a function of the form:E(x)=−A*x, causing links closer to the end of the document to contributenegatively to the total energy. Configurations that have lower energycan be more likely to occur as the process progresses, so the finaloutput will tend towards having more links near the end of the document,and fewer links near the beginning of the document. While specificinitial values can be calculated (non-trivially), in practice, thesevalues can be empirically tailored to specific applications.

The equilibrium distance, D_eq, can determine the average link spacingin the final configuration. It can be set to an initial value using oneof two sub-processes, depending on whether the maximum number of linksdesired, NL_max, in a document is less than the number of availablelinks, NL_tot, from a dictionary source.

Case 1:

-   -   IF (NL_max<NL_tot)    -   Calculate the average of the total length of linked content,        avg_LL, as the average length of an available linked word,        multiplied by the max number of links allowed in the document.        This case takes into consideration the lengths of all available        links in computing the average link length, even though fewer        than all of the links may be used in the final output.    -   avg_LL=sum(i=1 to NL tot, length(Link_i))*(NL_max/NL_tot)    -   Subtract the average total length of linked content from the        total length of the document (in number of characters), and        divide by the max number of links allowed (or NL_max+1 if        spacing before the first link and after the last link is        desired).    -   D_eq=(length(Document)−avg_LL)/(NL_max)

Case 2:

-   -   ELSE    -   Similar to case 1, except that total length of linkable content        is a simple sum, and there are no additional links over which to        construct an average.    -   LL=sum(i=1 to NL_max, length(Link_i))    -   D_eq=(length(Document)−LL)/(NL_max)

An example of an application utilizing FIG. 1 may involve aMetropolis-Hastings Monte Carlo optimization method addressing thegeneration of a document layout with link locations that are inaccordance with specified link distribution functions. TheMetropolis-Hastings Monte Carlo optimization method may result in areduction or a minimization of the number of calculations at each stepin the process. There may also be simulated annealing performed in theMonte Carlo method to determine a fine or granular result.

FIG. 2 depicts a graph 200 with an example of energies as a function ofthe process. In particular, FIG. 2 shows a graph 200 of the total energyof the system (energy scale is y-axis) decreasing over time (time scaleis x-axis 250) as the optimization process takes place. The graph 200illustrates an example of a configuration energy 220 versus time 250,where the optimization process progresses as time 250 increases from thestart of the process. The graph 200 shows the configuration energy 220,which represents the extremum quantity, and the lowest energyconfiguration state 230 of the configuration energy 220 at a particulartime in the optimization process.

The optimization process may also be described as a process ofdetermining a global minimum of the energy, where the lowest energyconfiguration state 230 of the configuration energy 220 at a particulartime in the optimization process can be a local minimum. In some cases,the maximum of the link distribution function can represent the globalminimum of the energy. For example, the maximum of the link distributionfunction may be used in the valuation of key words. For instance, asimulation can obtain a result where each key word in a dictionary hasthe same value, but in some cases, each key word has a predefined valuein dictionary and those values can be used as a weighting on the resultso that the more highly-weighted key words (e.g., highly-valued keywords) would be more well aligned with the desired distributionfunction. So the more highly-valued words would be more attracted to themaximum of the link distribution function (or the minimum of the globalenergy).

FIG. 3 depicts a graph with an example of link placements in a document300, where the links are placed in the document so that they are evenlyspaced apart. The document 300 shows rows 305 where words are placed ina document, for which the words that are shown, such as “glucose” 310,“liver” 320 and “sugar” 330, are the links in the document 300, whichare evenly-spaced apart from one another. In some implementations, thedistance of where the links are spaced apart from one another may referto a number of characters (or words) between links in the document or inat least a section of the document.

FIG. 4 depicts a graph 400 with an example of a flat link densityfunction to produce the evenly spaced link placements of FIG. 3. They-axis has a scale 420 for the link distribution function 435, and thex-axis has discrete intervals 410 for the discrete link densityfunction. The link density function of FIG. 4 can be used to produce theevenly-spaced link placements of FIG. 3 by convolving a discrete linkdensity function (e.g., 0 or 1 at every character location in thedocument, indicating whether the character is part of a link (1) or not(0)) with a Gaussian function. The discrete link density function can beused to approximate a link density function with continuous density. InFIG. 4, the link distribution function 435 has multiple peaks 425 at thesame level 445.

FIG. 5 depicts a graph of with an example of link placements in adocument 500 where the links are clustered together in a single cluster510. For instance, links in the document 500, such as “glucose” 535 and“liver” 520, are spaced apart from each other and other links. All ofthe links are clustered together in an area of the document 500 as aresult of the link distribution function 635 (e.g., a cosine functionwith one trough) of FIG. 6.

FIG. 6 depicts a graph 600 with an example of a link density functionwith a cosine function with one trough to produce the single cluster oflinks of FIG. 5. In FIG. 6, this link distribution function 635 can beconvolved with a Gaussian function to produce the link placements ofFIG. 5. The y-axis has a scale 620 for the link distribution function635, and the x-axis has discrete intervals 610 for the discrete linkdensity function.

FIG. 7 depicts a graph with an example of link placements in a document700 where the links are clustered together in two clusters that areevenly-spaced apart. The document 700 has a first cluster 710 and asecond cluster 720, that are spaced apart from each other. Each cluster710, 720 has links (e.g., the links for “low” 735 and “an” 720 in thefirst cluster 710, and the links for “sugar” 755 and “the” 730 in thesecond cluster) that are evenly spaced apart from other links in thesame cluster 710, 720.

FIG. 8 depicts a graph 800 with an example of a link density functionwith a cosine function with two troughs 835, 855 to produce the twoclusters of links of FIG. 7. The y-axis has a scale 820 for the linkdistribution function, and the x-axis has discrete intervals 810 for thediscrete link density function. In FIG. 8, the cosine function with twotroughs 835, 855 can be convolved with a Gaussian function to producethe link placements in the two clusters 710, 720 of FIG. 7.

Other implementations may have other link density functions, such as alink density function having a cosine function with n troughs to producen clusters of links (n is equal to or greater than 1) when the linkdensity function is convolved with a Gaussian function, for example.

FIG. 9 depicts an example of a webpage 900 containing advertiser links930 that have been positioned in the webpage 900 based on an analysis ofcross-linkable phrases 920, 922, 924 and 926 in the text 910. Thewebpage 900 contains text 910 describing a cooking recipe. The documentcontains cross-linkable phrases 920, 922, 924 and 926 associated withthe cooking recipe such as the phrase “Cheese Nachos” 920.

A link distribution function may be used to determine the placement oflinks 930 associated with phrases 920, 922, 924 and 926. In the case ofFIG. 3, the phrases “cheese nachos” 920, “pepper jack [cheese]” 922,“sharp cheddar [cheese]” 924 and “Tortilla Chips” 926 are associatedwith “Famous Cheese Brand's” advertisements 930. In webpage 900, all ofthe instances of the phrase 920 are located near the top of the page andall of the other instances of the phrases 922, 924 and 926 are locatednear the center of the page. If all of the phrases 920, 922, 924 and 926associated with advertisements 930 carry equal weight, the linkdistribution function applied to phrases 920, 922, 924 and 926 mayemphasize placement of links 930 associated with phrases 920, 922, 924and 926 in locations in the upper middle to upper sections of thewebpage 900. In another example, if the phrase 920 carries more weightthan the phrases 922, 924 and 926, the link may determine that theplacement of the links 930 should be done closer to instances of phrase920. In addition, the link distribution function may also determineplacement of links 930 in webpage 900 based on weighting that emphasizesan advertisement link (e.g., weighing placement of the link as close tothe top of the website with respect to the distribution of phrases 920,922, 924 and 926 in the website). Thus, even if most of the instances ofphrases 920, 922, 924 and 926 occur in the middle of the webpage, thelinks 930 may still be determined by the function to be best placed inthe upper portion of the webpage 900 with respect to phrases 920, 922,924 and 926.

FIG. 10 depicts an example of a UI for a crosslinker tool 1000 that hasidentified various characters and phrases in the text of a webpage 1010that is similar to the webpage of FIG. 9. In particular, identifiedcharacters and phrases 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,1019, 1020, 1021 and 1022 have been cross-linked while identifiedcharacters and phrases 1051, 1052 and 1053 have not been cross-linked.

The cross-linked characters and phrases may be managed through an activelink management tool 1030. Active link management tool 1030 isconfigured to list the cross-linked characters and phrases and enablesthe displaying of crosslink density information through a graphic and/ortextual output tool 1040. The active link management tool 1030 may alsoprovide a filter 1060 that provides for filtering the displayedcross-linked characters in the list. For example, the filter 1060 mayprovide for a filter that shows all active links 1061, and also may beprovided for a filter that displays published links 1062 and/or savedlinks 1063.

Identified characters and phrases that have not been cross-linked mayalso be managed through an inactive link management tool 1050. Theinactive link management tool 1050 lists identified characters andphrases that have not been cross-linked, and may allow for thecross-linking of them.

FIG. 11 depicts a second example of a UI 1100 for the crosslinker toolof FIG. 10 that enables link management for new webpages. The UI 1100includes a webpage management tool 1110 that has a filter tool 1120,which enables a list of webpages 1130 to be displayed through the UI1110. The webpages listed in 1130 may be edited through accessing thesite through an edit selector 1135, which enables editing of the linksin the selected webpage.

The filter tool 1120 may be configured to display newly created webpages1121, saved webpages 1122 and/or published webpages 1123, for example.In addition, the filter tool 1120 may be configured to display webpageinformation such as the webpage's title 1131, the site hosting thewebpage 1132, a status of the webpage 1133, and other identificationinformation pertaining to the functionality of the website 1134, such asa Recipe ID 1142 for webpages that display cooking recipe information.

In addition to the filter tool 1120, a search tool 1140 may be providedto allow for custom searches of editable webpages. The search may beconducted, for example, through searching for the URL of the webpage1141 and/or through searching for the Recipe ID 1142.

Some of the described embodiments of the subject matter and theoperations can be implemented in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Embodiments of the subject matterdescribed in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on computer storage medium for execution by, or tocontrol the operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded information fortransmission to suitable receiver apparatus for execution by a dataprocessing apparatus. The data processing apparatus may include thesensor, may be part of the sensor, may be a part of a system with thesensor, may be integrated within the system and/or sensor, may be partof receivers, transmitters, components and/or logic associated with thesensor or the receivers and/or transmitters, or any combination thereof.A computer storage medium can be, or be included in, a computer-readablestorage device, a computer-readable storage substrate, a random orserial access memory array or device, or a combination of one or more ofthem. Moreover, while a computer storage medium is not a propagatedsignal, a computer storage medium can be a source or destination ofcomputer program instructions encoded in an artificially-generatedpropagated signal. The computer storage medium can also be, or beincluded in, one or more separate physical components or media (e.g.,multiple CDs, disks, or other storage devices).

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

Various apparatuses, devices, and machines for processing data, may beused as a “data processing apparatus,” including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing. The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,or a portable storage device (e.g., a universal serial bus (USB) flashdrive), to name just a few. Devices suitable for storing computerprogram instructions and data include all forms of non-volatile memory,media and memory devices, including by way of example semiconductormemory devices, e.g., EPROM, EEPROM, and flash memory devices; magneticdisks, e.g., internal hard disks or removable disks; magneto-opticaldisks; and CD-ROM and DVD-ROM disks. The processor and the memory can besupplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular embodiments of particular inventions.Certain features that are described in this specification in the contextof separate embodiments can also be implemented in combination in asingle embodiment. Conversely, various features that are described inthe context of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be useful. What is claimed is:

What is claimed is:
 1. A method for determining a placement of links ona document, the method comprising: selecting a document comprising wordsof text for placing links in the document; selecting a link distributionfunction; and using the link distribution function in determininglocations for the placement of the links in the document.